Principal iOS Software Engineer
Description
The Principal Software Engineer will report to the Software Development Manager of Smart Device Software. They will evaluate and select technology and architecture that is appropriate for the desired customer experience, establish patterns, procedures, and practices that enable the highest quality standards. They will also be responsible for developing mobile applications appropriate for our customers and utilized by thousands of home automation systems. This position will help develop the Home Control Customer Interface for iOS mobile apps utilizing the Swift programming language.
This position will act as a leader and mentor for the team, and therefore should be a motivated self-starter who can manage working in a fast-paced environment and manage multiple projects simultaneously. The Principal Software Engineer will work cross functionally and should be able to influence both their team and other team members without direct authority. This role requires the ability to effectively articulate a viewpoint and will need high attention to detail with excellent communication and presentation skills. The Principal Software Engineer will need to demonstrate the ability to think outside the box to manage both technical and analytic challenges presented within the business and should possess exceptional problem-solving skills.
Responsibilities and Duties of the Role:
- Drive the technical direction of the codebase, CI/CD and testing infrastructure, operational metrics capabilities, and all related pieces of the iOS Control4 ecosystem.
- Work closely with UX designers, product managers, and engineering leadership to craft best-of-class, delightful user experiences.
- Collaborate with other client and backend engineers, to architect and implement solutions that are built to last.
- Mentor team members of all levels and support peers through code review and pair programming.
- Identify areas for growth within the team processes and develop new systems for collaboration.
- Manage production issues and solve novel problems.
- Use Test Driven Development to speed feature delivery and reduce the bug count while increasing test code coverage as well as perceived customer quality
- Ensure parity between iOS and Android apps by working with the Android team developers
- Implement graphical designs within the application with pixel perfect accuracy
Required Education, Experience/Skills/Training:
- Minimum of 7+ years of experience
- 5+ years of extensive experience developing iOS mobile native applications in Swift and SwiftUI
- Bachelor’s degree in computer science, Information Systems, Software Engineering, or comparable field of study, and/or equivalent work experience
- Expert knowledge of iOS app architecture patterns (MVVM, MVP, etc.) and design principles
- Advanced understanding of iOS app development, Swift and SwiftUI, thread management, custom views, and animations
- Experience integrating with backend systems, web services, and third-party software
- Proven understanding and experience using reactive frameworks
- Building high-quality code by always writing tests and using performance and static analysis evaluation tools
- Familiarity with Scrum and Agile methodologies
- Excellent English communicator who collaborates well across teams and time zones, while also being able to work fully independently when needed
- Solid understanding of the full iOS mobile development life cycle
- Understanding of mobile database data persistence, including the use of Realm
- Strong knowledge of iOS UI design principles and best practices
- Advanced knowledge of SwiftUI layouts and creating adaptive layouts for various hardware configurations
- Experience writing custom views and controls
- Experience in testing iOS applications: unit test, integration test, UI test, performance test
Preferred Qualifications:
- Experience with streaming video and codecs (h.264, h.265)
- Experience with telephony technologies like SIP, WebRTC, or LiveKit
- Direct experience mentoring or managing others